package com.itheima.edu.homeweek;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

public class HomeWeek07 {                              //我写在当前项目下
    /*键盘录入一个任意字符串，统计字符串中相邻字符出现的次数，将结果写到D盘下的count.txt文件中（面试题）
    例如：aaccaabaab
    count.txt：2a2c2a1b2a1b0*/
    public static void main(String[] args) throws IOException {
        //录入字符串
        System.out.println("请录入字符串");
        String s =new Scanner(System.in).nextLine();
        //创建输出流对象
        FileOutputStream fos = new FileOutputStream("day015\\c.txt");

        char[] chars = s.toCharArray();//将字符串转为字符数组
        int count = 1;//默认字符出现一次

        for (int i = 0; i < chars.length-1; i++) {//后面有char[i+1],所以索引少一位
            if(i == (chars.length - 2) && chars[chars.length-2] == chars[chars.length-1]){//如果读到倒数第二个,倒数第二个字符等于倒数第一个字符
                fos.write(((count+1)+""+chars[chars.length-1]).getBytes());//直接输出count+1及最后一个字符
                break;
            }
            if(i == (chars.length - 2) && chars[chars.length-2] != chars[chars.length-1]){//如果读到倒数第二个,倒数第二个字符不等于倒数第一个字符
                //如果不加倒数第三个字符跟倒数第二个字符是否相等判断的话,倒数第二个字符跟倒数第三个字符不相等则无法输出倒数第二个字符
                if(chars[chars.length-2] == chars[chars.length-3]){//判断倒数第三个字符跟倒数第二个字符是否相等
                    fos.write((""+1+chars[chars.length-1]).getBytes());//相等则直接输出1和最后一个字符
                    break;
                }else{
                    fos.write((""+1+chars[chars.length-2]).getBytes());//倒数第三个字符跟倒数第二个字符不相等
                    fos.write((""+1+chars[chars.length-1]).getBytes());//输出最后一个字符前也要输出倒数第二个字符
                    break;
                }
            }
            //如果最后两个字符相同则无法输出,所以在前面加上i循环到chars.length-1时的不同情况的输出
            if(chars[i+1] != chars[i]){//判断前一个跟后一个字符是否相等
                fos.write((count+""+chars[i]).getBytes());//不相等则输出前一个字符及其数量
                count= 1;//下一个字符重新赋值
            }else{
                    count++;//相等则count++,再判断下一个
                }
            }
        }

    }
